#include "today.h"

Today::Today(QWidget *parent)
    : QWidget(parent)
    , m_iconLabel(nullptr)
    , m_tempLabel(nullptr)
    , m_wisdomLabel(nullptr)
{
    color = QColor (204, 235, 255);
    setupUI();
}

void Today::setupUI()
{

    QHBoxLayout *layout = new QHBoxLayout(this);

    // 左边图标 - 使用成员变量
    m_iconLabel = new QLabel(this);  // 初始化成员变量
    m_iconLabel->setPixmap(QPixmap(":冰激凌").scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
    m_iconLabel->setAlignment(Qt::AlignCenter);
    m_iconLabel->setStyleSheet("QLabel { background-color: rgba(255,255,255,80); border-radius: 8px; padding: 5px; }");
    //初始化字体
    QFont font;
    font.setFamily("Microsoft YaHei"); // 设置字体系列，例如微软雅黑:cite[10]
    font.setPointSize(16);            // 设置字体大小
    font.setBold(true);               // 设置加粗
    // 中间气温 - 使用成员变量
    m_tempLabel = new QLabel("今日温度\n25°C", this);  // 初始化成员变量
    m_tempLabel->setFont(font);
    // ... 字体设置代码保持不变 ...
    font.setItalic(true);             // 设置斜体
    // 右边哲理语句 - 使用成员变量
    m_wisdomLabel = new QLabel("阳光总在风雨后\n美好的一天从好心情开始！", this);  // 初始化成员变量

    // 应用字体到Label
    m_wisdomLabel->setFont(font);
    // ... 字体设置代码保持不变 ...

    // 添加到布局 - 使用成员变量
    layout->addWidget(m_iconLabel, 1);
    layout->addWidget(m_tempLabel, 1);
    layout->addWidget(m_wisdomLabel, 2);

        layout->setContentsMargins(12, 8, 12, 8);
        layout->setSpacing(12);

        // 设置widget背景 - 使用渐变背景增加诗意
        this->setStyleSheet("YourCustomWidget { "
                           "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, "
                           "stop:0 #a8edea, stop:0.5 #fed6e3, stop:1 #a8edea); "
                           "border-radius: 15px; "
                           "border: 1px solid rgba(255,255,255,0.3); "
                           "}");
}

void Today::setTemperature(const QString &temp)
{
    m_tempLabel->setText(temp);
}

void Today::setWisdomText(const QString &text)
{
    m_wisdomLabel->setText(text);
}

void Today::setIcon(const QPixmap &pixmap)
{
    m_iconLabel->setPixmap(pixmap.scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
    m_iconLabel->setAlignment(Qt::AlignCenter);
}


void Today::handleWeatherData(const QVector<WeatherData> &weatherData)
{
    if (weatherData.isEmpty()) {
            return;  // 添加空检查
        }

        const WeatherData &data = weatherData[0];
        QString type = data.type;  // 使用局部变量或成员变量
        int temp = (data.lowTemp + data.highTemp) / 2;

        QString icon_path;
        QString sentence;

        // 1. 先根据温度设置icon_path
        if (temp > 25) {
            icon_path = ":冰激凌";
        } else {
            icon_path = ":汤";
        }

        // 2. 根据type和温度设置sentence
        if (type == "雪") {
            sentence = "冰封三尺非一日之寒，修道九重需累世之功";
        } else if (type == "晴") {
            sentence = "夏长万物竞华实，心静自然生清凉";
        } else if (type == "雨") {  // 修正：使用type而不是data.type
            sentence = "春风化雨润无声，君子中庸致中和";
        } else {
            if (temp < 0) {
                sentence = "天寒地冻见真章，如梅傲雪守孤芳";
            } else if (temp <= 25) {
                sentence = "寒暑相推而岁成，文武之道一张一弛";
            } else {
                sentence = "炎阳淬金玉，烈火炼真如";
            }
        }

        // 安全地更新UI
        if (m_iconLabel) {
            m_iconLabel->setPixmap(QPixmap(icon_path).scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
        }
        if (m_tempLabel) {
            m_tempLabel->setText("今日温度\n" + QString::number(temp) + "°C");  // 使用QString::number
        }
        if (m_wisdomLabel) {
            m_wisdomLabel->setText(sentence);
        }
}
void Today::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    // 创建 QPainter 对象
    QPainter painter(this);

    // 启用抗锯齿效果，使绘制更加平滑
    painter.setRenderHint(QPainter::Antialiasing);

    // 设置画笔颜色和宽度
    QPen pen;
    pen.setColor(this->color);  // 设置边框颜色为黑色
    pen.setWidth(0);  // 设置边框宽度
    painter.setPen(pen);

    // 设置画刷颜色
    QBrush brush;
    brush.setColor(this->color);  // 设置填充颜色为浅蓝色
    brush.setStyle(Qt::SolidPattern);
    painter.setBrush(brush);

    // 获取控件的矩形区域
    QRect rect = this->rect();

    // 绘制圆角矩形，rect 是控件的区域，设置圆角半径为 15
    painter.drawRoundedRect(rect, 15, 15);
}
